package com.xjscrm.server.common.util;

import com.alibaba.fastjson.JSONObject;
import com.xjscrm.common.entity.WwGroup;
import com.xjscrm.common.utils.Tools;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * @author lucher.chen create in 2024/3/1 18:25
 */
public class GroupTools {

    /**
     * 获取群成员得权限(0-群主；1-管理员；2-普通成员)
     *
     * @param memberWxid 成员wxid
     * @param wwGroup
     * @author lucher
     * @date 2024/3/6 15:43
     */
    public static Integer getIdentity(WwGroup wwGroup, String memberWxid) {
        if (wwGroup == null) {
            return 2;
        }

        if (StringUtils.isBlank(memberWxid)) {
            return 2;
        }

        //验证是否是群主
        String createWxid = Tools.getStr(wwGroup.getCreateWxid());
        if (Tools.getStr(memberWxid).equals(createWxid)) {//判断是否是群主
            return 0;
        }

        //验证是否是管理人员
        List<String> adminWxIdList = JSONObject.parseArray(wwGroup.getAdminWxIds(), String.class);
        if (adminWxIdList != null && adminWxIdList.size() > 0) {
            if (adminWxIdList.contains(memberWxid)) {
                return 1;
            }
        }

        //如果不是群主，也不是管理人员，则返回普通成员
        return 2;

    }

    /**
     * 验证群权限是否符合，全部不符合，则返回false
     *
     * @param identityList 群成员角色列表(0-群主；1-管理员；2-普通成员)
     * @param wwGroup
     * @author lucher
     * @date 2024/3/6 15:43
     */
    public static boolean verifyIdentity(WwGroup wwGroup, List<Integer> identityList, String memberWxid) {

        if (wwGroup == null) {
            return false;
        }

        if (identityList == null || identityList.size() == 0) {
            return false;
        }

        if (StringUtils.isBlank(memberWxid)) {
            return false;
        }

        //获取该机器人在该群里的身份
        Integer member_identity = getIdentity(wwGroup, memberWxid);
        if (identityList.contains(member_identity)) {
            return true;
        }

        return false;
    }

}
